import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

    //自定义排序:

    //封闭图形个数问题
    //通过内部类创建两个关键字
    //两个关键字的比较：
    //1 . 封闭图形的个数(对整数进行拆解，分别计算其封闭图形个数，再相加)
    //2 . 数值大小
    //先创建一个数组，用于表示 0 ~ 9 每个数字的封闭空间个数
    //然后记录每个数字的封闭图形个数和数值大小

    //创建 cmp 进行比较
    //比较方法：
    //1 . 封闭图形个数多的大
    //2 . 若 1 相同，则直接比较数值大小

    static final int[] D = {1,0,0,0,1,0,1,0,2,1};

    static class St{
        // a 表示数值，b 表示其封闭图形的个数
        int a;
        int b;

        St(int a) {
            this.a = a;
            this.b = fun(a);
        }
    }

    //整数拆分，计算 x 数字的封闭图形个数
    static int fun(int x){
        int count = 0;
        while(x > 0){
            count += D[x % 10];
            x /= 10;
        }
        return count;
    }

    //排序规则：首先按 b 的升序排列，若 b 相同，则按 a 的升序排列
    static class StComparator implements Comparator<St>{
        public int compare(St x,St y){
            if(x.b != y.b) return Integer.compare(x.b,y.b);
            return Integer.compare(x.a,y.a);
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        St[] s = new St[n];

        for (int i = 0; i < n; i++) {
            s[i] = new St(scanner.nextInt());
        }

        Arrays.sort(s,new StComparator());

        for (int i = 0; i < n; i++) {
            System.out.print(s[i].a + " ");
        }
    }
}
